package com.ruoyi.buss.report.service.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.ruoyi.buss.report.domain.ReportWgcjVillageLsb;
import com.ruoyi.buss.utils.DateUtilss;
import com.ruoyi.buss.utils.ListUtil;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.buss.report.mapper.ReportWgcjBpjmLsbMapper;
import com.ruoyi.buss.report.domain.ReportWgcjBpjmLsb;
import com.ruoyi.buss.report.service.IReportWgcjBpjmLsbService;

/**
 * 网格村居-包片居民报表Service业务层处理
 * 
 * @author sxy
 * @date 2021-07-16
 */
@Service
public class ReportWgcjBpjmLsbServiceImpl implements IReportWgcjBpjmLsbService 
{
    @Autowired
    private ReportWgcjBpjmLsbMapper reportWgcjBpjmLsbMapper;

    /**
     * 查询网格村居-包片居民报表
     * 
     * @param village 网格村居-包片居民报表ID
     * @return 网格村居-包片居民报表
     */
    @Override
    public ReportWgcjBpjmLsb selectReportWgcjBpjmLsbById(String village)
    {
        return reportWgcjBpjmLsbMapper.selectReportWgcjBpjmLsbById(village);
    }

    /**
     * 查询网格村居-包片居民报表列表
     * 
     * @param reportWgcjBpjmLsb 网格村居-包片居民报表
     * @return 网格村居-包片居民报表
     */
    @Override
    public List<ReportWgcjBpjmLsb> selectReportWgcjBpjmLsbList(ReportWgcjBpjmLsb reportWgcjBpjmLsb, LoginUser userInfo, int type)
    {
        List<ReportWgcjBpjmLsb> doList = new ArrayList<ReportWgcjBpjmLsb>();

        String orgId = userInfo.getSysUser().getDept().getOrgId();
        String userId = userInfo.getSysUser().getUserName();
        //如果是admin用户不做处理
        if(userInfo.getRoles().contains("zhhz")){
            reportWgcjBpjmLsb.setOrgId(orgId);
        } else if(userInfo.getRoles().contains("common")){
            reportWgcjBpjmLsb.setOrgId(orgId);
            reportWgcjBpjmLsb.setUserId(userId);
        }

        // 获取上个月最后一天
        reportWgcjBpjmLsb
                .setMonthEnd(reportWgcjBpjmLsb.getSjrq() == null || reportWgcjBpjmLsb.getSjrq().length()<8?
                        DateUtilss.getLastDayOfMonth(Integer.valueOf(DateUtils.getMMddStr().substring(0, 2))-1):
                        Integer.valueOf(reportWgcjBpjmLsb.getSjrq().substring(4,6)) == 1 ? Integer.valueOf(reportWgcjBpjmLsb.getSjrq().substring(0,4))-1+"1231":
                                reportWgcjBpjmLsb.getSjrq().substring(0,4)+
                                        DateUtilss.getLastDayOfMonths(Integer.valueOf(reportWgcjBpjmLsb.getSjrq().substring(4,6))-1));
        // 获取去年最后一天
        reportWgcjBpjmLsb.setYearEnd(reportWgcjBpjmLsb.getSjrq() == null || reportWgcjBpjmLsb.getSjrq().length()<8?
                DateUtilss.getLastYear(new Date(), -1):Integer.valueOf(reportWgcjBpjmLsb.getSjrq().substring(0,4))-1+"1231");
        if (reportWgcjBpjmLsb.getStartTime() == null) {
            // 如果开始将时间为空 ,则设置开始时间为去年最后一天
            reportWgcjBpjmLsb.setStartTime(DateUtilss.getLastYear(new Date(), -1));
        }
        if (reportWgcjBpjmLsb.getEndTime() == null) {
            // 如果结束时间为空则设置结束日期到昨天
            reportWgcjBpjmLsb.setEndTime(new SimpleDateFormat("yyyyMMdd").format(DateUtilss.getdate(-1)));
        }

        if (type == 0) {
            doList = reportWgcjBpjmLsbMapper.wgcjbpjm(reportWgcjBpjmLsb);

            ReportWgcjBpjmLsb vo = new ReportWgcjBpjmLsb();
            List<ReportWgcjBpjmLsb> list = reportWgcjBpjmLsbMapper.wgcjbpjmhz(reportWgcjBpjmLsb);
            if(!ListUtil.isNullOrEmpty(list)){
                vo = list.get(0);
                vo.setOrgName("总行汇总数据");
                doList.add(vo);
            }

        } else if (type == 1) {
            ArrayList<String> sjrqs = DateUtilss.getThreeYearFourQuarterAndMonth();
            reportWgcjBpjmLsb.setSjrqs(sjrqs);
            doList = reportWgcjBpjmLsbMapper.wgcjbpjmMonth(reportWgcjBpjmLsb);
        } else if (type == 2) {
            /**
             * 获取三年内每个月最后一天
             */
            ArrayList<String> sjrqs = DateUtilss.getEndMonthByYear(1, 0);
            reportWgcjBpjmLsb.setSjrqs(sjrqs);
            doList = reportWgcjBpjmLsbMapper.wgcjbpjmMonth(reportWgcjBpjmLsb);
        }
        
        return doList;
    }

    /**
     * 新增网格村居-包片居民报表
     * 
     * @param reportWgcjBpjmLsb 网格村居-包片居民报表
     * @return 结果
     */
    @Override
    public int insertReportWgcjBpjmLsb(ReportWgcjBpjmLsb reportWgcjBpjmLsb)
    {
        reportWgcjBpjmLsb.setCreateTime(DateUtils.getNowDate());
        return reportWgcjBpjmLsbMapper.insertReportWgcjBpjmLsb(reportWgcjBpjmLsb);
    }

    /**
     * 修改网格村居-包片居民报表
     * 
     * @param reportWgcjBpjmLsb 网格村居-包片居民报表
     * @return 结果
     */
    @Override
    public int updateReportWgcjBpjmLsb(ReportWgcjBpjmLsb reportWgcjBpjmLsb)
    {
        return reportWgcjBpjmLsbMapper.updateReportWgcjBpjmLsb(reportWgcjBpjmLsb);
    }

    /**
     * 批量删除网格村居-包片居民报表
     * 
     * @param villages 需要删除的网格村居-包片居民报表ID
     * @return 结果
     */
    @Override
    public int deleteReportWgcjBpjmLsbByIds(String[] villages)
    {
        return reportWgcjBpjmLsbMapper.deleteReportWgcjBpjmLsbByIds(villages);
    }

    /**
     * 删除网格村居-包片居民报表信息
     * 
     * @param village 网格村居-包片居民报表ID
     * @return 结果
     */
    @Override
    public int deleteReportWgcjBpjmLsbById(String village)
    {
        return reportWgcjBpjmLsbMapper.deleteReportWgcjBpjmLsbById(village);
    }
}
